#ifndef __CALCULADOR_DE_GANANCIA_H__
#define __CALCULADOR_DE_GANANCIA_H__

#include "Lista.h"
#include "alumno.h"
#include "conjunto_de_descriptores.h"

class CalculadorDeGanancia {

private:

	/**
	 * Precondiciones: La lista debe existir y el descriptor debe ser valido.
	 * Postcondiciones: Retorna las probabilidad de que el descriptor/calidifador
	 *                  indicado tenga el valor true en el conjunto de alumnos.
	 */
	double calcularProbabilidadDeTrue(Lista<Alumno*>*, DescriptorAlumno);

	/**
	 * Precondiciones: La lista debe exisitir.
	 * Postcondiciones: Retorna la entropia del conjunto de alumnos.
	 */
	double calcularEntropia(Lista<Alumno*>*);

	/**
	 * Precondiciones: La lista debe exisitir y el descriptor debe ser valido.
	 * Postcondiciones: Retorna la ganancia del descriptor en el conjunto de
	 *                  alumnos ingresado.
	 */
	double calcularGananciaDelDescriptor(Lista<Alumno*>*, DescriptorAlumno);

public:



	/**
	 * Precondiciones: La lista debe existir y el conjunto no debe estar vacio.
	 * Postcondiciones: Retorna el desrciptor de mayor ganancia en la lista.
	 */
	DescriptorAlumno descriptorConMayorGanancia(Lista<Alumno*>*, ConjuntoDeDescriptores);

};

#endif /* __CALCULADOR_DE_GANANCIA_H__ */
